package cn.yuan.basic.util;

import cn.yuan.user.domain.Logininfo;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import javax.servlet.http.HttpServletRequest;

/**
 * 登录上下文
 *   登录相关的信息
 *   1.当前登录人信息
 *   2.当前登录人所拥有的角色和权限信息
 *   我们如何在非受容器管理的类中，获取受容器管理的Bean
 */

public class LoginContext {
    public static Logininfo getLoginInfo(HttpServletRequest request){
        //获取容器对象
        WebApplicationContext applicationContext =
                WebApplicationContextUtils.getWebApplicationContext(request.getServletContext());
        //从容器中获取bean
        RedisTemplate redisTemplate = applicationContext.getBean("redisTemplate",RedisTemplate.class);
        String token = request.getHeader("token");
        Object loginObj = redisTemplate.opsForValue().get(token);//获取当前登录人信息
        if (loginObj != null) {
            return (Logininfo) loginObj;
        }
        return null;
    }
}
